Generally, in a communication system, a transmission end of the communication system encodes transmission information using a forward error correction code, and transmits the encoded information to a reception end of the communication system, such that errors caused by a channel can be corrected in the information received in the reception end. The reception end demodulates a reception signal, decodes a forward error correction code, and recovers the transmission information transferred from the transmission end. During this decoding process, reception signal errors caused by a channel can be corrected.
There are various kinds of forward error correction codes that may be used. For the convenience of description, a turbo code will hereinafter be described as an example of the forward error correction code. The turbo code includes a recursive systematic convolution encoder and an interleaver. In case of actually implementing the turbo code, the interleaver facilitates parallel decoding, and an example of this interleaver may be a quadratic polynomial permutation (QPP) interleaver. It is well known in the art that this QPP interleaver maintains a superior throughput or performance in only a specific-sized data block. In this case, the term “data block” is block unit data encoded by the encoder. If we think block unit data transferred from an upper layer to a physical layer is encoded without segmentation discussed below, this data block may also be called as a transport block (TB). On the other hand, if we think the segmentation of the transport block to be encoded, this data block may be matched to “a code block”.
In general, the larger the data-block size, the higher the turbo-code performance. A data block of more than a specific size is segmented into a plurality of small-sized data blocks by an actual communication system, such that the small-sized data blocks are encoded for the convenience of actual implementation. The divided small-sized data blocks are called code blocks. Generally, although these code blocks have the same size, one of several code blocks may have another size due to the limitation of the QPP interleaver size. A forward error correction coding process on the basis of a code block of a predetermined interleaver size is performed on the small-sized data blocks, and the resultant data blocks are then transferred to an RF (Radio Frequency) channel. In this case, a burst error may occur in the above process of transferring the resultant data blocks to the RF channel, such that the above resultant data blocks are interleaved to reduce an influence of the burst error. The interleaved data blocks are mapped to actual radio resources, such that the mapped result is transferred.
An amount of radio resources used in an actual transmission process is constant, such that a rate matching process should be performed on the encoded code blocks due to the constant amount of radio resources. Generally, the rate matching process is implemented by a puncturing or a repetition. For example, the rate matching may also be performed on the basis of an encoded code block in the same manner as in a WCDMA of the 3GPP. For another example, a systematic part and a parity part of the encoded code block may be separated from each other. The rate matching process may be performed on the systematic part and the parity part together. On the other hand, the rate matching process may also be independently performed on each of the systematic part and the parity part.
FIG. 1 is a conceptual diagram illustrating basic operations of a turbo encoder.
As shown in FIG. 1, if a turbo-encoder receives one code block, it divides the received one code block into a systematic part (S) and parity parts (P1 and P2). The systematic part S and the parity parts P1 and P2 pass through individual sub-block interleavers, respectively. Thus, the systematic part S and the parity parts P1 and P2 may be interleaved by different sub-block interleavers, and the interleaved result is stored in a circular buffer.
As can be seen from FIG. 1, the systematic part and the parity parts of the code block may be separated from each other, and the rate matching process is performed on the individual separated parts, but the example of FIG. 1 has been disclosed for only illustrative purposes and the scope and spirit of the present invention are not limited to this example and can also be applied to other examples. For the convenience of description, it is assumed that a code rate is a value of ⅓.
Although a variety of transport block sizes may be defined according to service categories of an upper layer, it is preferable that the transport block sizes may be quantized to effectively perform the signaling of various transport block sizes. During the quantization process, in order to adjust a source data block transferred from an upper layer to the size of a data block of a physical layer, a dummy bit is added to the source data block. During this quantization process, it is preferable to minimize the amount of added dummy bits.
Further, the use of channel codes is necessary not only in a communication system such as the long term evolution (LTE) system but also in a broadcasting system. As a general configuration method for channel codes, a transmitting end performs encoding on an input symbol using an encoder and then transmits the encoded symbol, and a receiving end performs decoding on the encoded symbol to restore the input symbol.
In addition, since a channel code has different performance depending on its characteristics, the LTE system uses various channel codes according to data types. For example, the LTE system uses a tail biting convolution code (TBCC) for a broadcast channel (BCH), downlink (DL) control information, etc. In addition, when a large amount of data is transmitted like a PDSCH, and PUSCH, the LTE system uses a turbo code (TC). When a small amount of important data is transmitted like a CQI/PMI in the PUSCH and PUCCH format 3, the LTE system uses an RM(32,O) block code.
FIG. 2 is a reference diagram for explaining a repetition accumulate (RA) code. Among channel codes, a concatenated code such as the RA code goes through two simple forms of encoders and a single piece of processing (permutation) equipment between the two encoders. The performance of the RA code may be similar to that of the turbo code, but in the same situation, the complexity of the RA code can be significantly reduced compared to that of the turbo code. In the case of a concatenated form of a code, as the number of sub-codes in the code increases and the performance of each of the sub-codes increase, the overall performance of the concatenated code is improved.